打开 Vivado,点击 Create Project。
选择工程名称和路径,点击 Next。
选择 RTL Project(勾选 Do not specify sources at this time),点击 Next。
选择正确的 FPGA 型号(如 xc7z020clg400-2),点击 Next → Finish。
在 Flow Navigator 中点击 Create Block Design。
在 Block Design 画布中,点击 “+” 添加 IP,搜索 “Zynq”,选择 Zynq7 Processing System,双击添加。
点击 Run Block Automation(自动连接 PS-PL 接口,保持默认即可)。
Memory Type:选择DDR3(Low),根据原理图进行选择,其中DDR3和DDE3(Low)的主要区别是工作电压的不同,DDR3是1.5V,DDR3(Low)是1.35V。
Memory Part: 根据手册我们所用的芯片型号是MT41K256M16TW-107,所以一般默认选择 MT41K256M16 RE-125。后面的某些参数会直接给出。为了帮助理解每个参数怎么配置,这里选择Custom。
Effective DRAM Bus Width: 由于 核心板 里有两个DDR3,一个DDR3是16位,所以两个的数据位宽为32位。 之后的保持默认不变。
具体配置如下:
相关参数通过查看数据手册进行填写:
DRAM IC Bus Width: MT41K256M16TW-107的数据总线是16bits,容量:4096Mb即512MB
Speed Bin:这里选择DDR3 1600K
根据MT41K256M16TW-107数据手册,-107的速度级别对应的Data Rate为1866,并且向下兼容到1600。当向下兼容到1600时,其tRCD-tRP-CL参数为11-11-11。
根据DDR3 SDRAM -Wikipedia 手册,当tRCD-tRP-CL参数为11-11-11时,对应的Type为K。
Bank Address Count,Row Address Count,Col Address Count:根据数据手册page15 可以得到数值:
CAS Latency(CL),tRCD,tRP:由数据手册可以直接得到:
CAS Write Latency(CWL):在数据手册Table 55查看表格得到值:
tRC,tRASmin:在数据手册Table 55查看表格得到值:
tFAW:根据数据手册Table 2和 Table 58查看表格得到数值:
首先,将DRAM Training选项全部勾选:
剩余两个部分的填写有两种方式:手动输入和系统自动计算。
如果要手动计算的话,先选择自动模式记下封装延迟,(因为封装延时是信号在芯片封装内部传输的延时,在vivado是看不到的)最后手动计算:
DQS to Clock Delay(ns)计算公式如下:
其中:
Path DelayCLK0 = CLK0 的总延迟(ps)
Path DelayDQS = DQS 的总延迟(ps)
除以 1000 是为了将皮秒(ps)转换为纳秒(ns)。
公式验证:
a.计算 CLK0 的路径延迟
b.计算 DQS0 的路径延迟
c.计算 DQS0 到时钟的延迟
d.其他 DQS 信号的计算
同理,对于 DQS1、DQS2 等信号,只需替换对应的 L 和
值,重复上述步骤即可。
Board Delay(ns)计算公式
其中:
Path DelayCLK0 = CLK0 的总延迟(ps)
Path DelayDQ = DQ 的总延迟(ps)
除以 1000 是为了将皮秒(ps)转换为纳秒(ns)。
公式验证:
a.首先计算 CLK 的路径延迟:
以CLK0为例:
将长度 (单位为 mm)转换为英寸:
计算 CLK 的路径延迟:
b.计算 (DQ[0:7])(以 (DQ7:0) 为例)的路径延迟:
将长度 (L_{DQ7:0})(单位为 mm)转换为英寸:
计算 (DQ[0:7]) 的路径延迟:
c.根据公式计算 (Board\ Delay):
Calculated:系统自动计算。我们通过画PCB的EDA软件(如Altium Designer、Cadence等)获取DDR的网络走线的长度,填入Length栏中,由vivado自动计算出延时时间。界面如下:
由于我们有两片DDR3,所以有两对差分时钟信号,其中CLK0,CLK1,DQS0,DQS1是第一片DDR3的信号,CLK0/CLK1 提供时钟,DQS0/DQS1 控制 16 位数据总线,第二片DDR3同理。
这部分保持默认即可。
首先解释一下“眼图”:
DDR 眼图是一种通过示波器观察高速串行信号时,将多个数据位的波形叠加显示形成的图形,因其形状类似 “眼睛” 而得名。它是评估 DDR(Double Data Rate)存储器信号完整性的关键工具。
理想位宽(Ideal bit width):128 units
眼图最小 - 最大(EYE_MIN - MAX):[8,108]、[12,108]、[12,100]、[16,104]
眼图中心(EYE CENTER):58/128、60/128、56/128、60/128
眼图宽度(EYE WIDTH):78.12%、75.00%、68.75%、67.50%
眼图调整(EYE ADJUSTED):未显示具体数据
眼图宽度:眼图宽度百分比表明信号的稳定性。较高的百分比表示信号在该通道较为稳定。
眼图中心:眼图中心的值显示了信号在时间轴上的位置。理想情况下,眼图中心应接近 50%(64/128)。
眼图最小 - 最大:这个范围显示了信号在时间轴上的波动范围。较小的范围(如 [8,108])表示信号在该通道(Lane - 0)的波动较小。